μλ°μ€ν¬λ¦½νΈμ μ΅μ λ 체μ΄λ(?.)κ³Ό λκ΄νΈ νκΈ°λ²μ λ§μ€ν°νμ¬ μμ μ μ΄κ³ λμ μΈ μμ± μ κ·Όμ ꡬννμΈμ. μ€μ©μ μΈ μμ μ λͺ¨λ² μ¬λ‘λ₯Ό ν΅ν΄ λ°°μ보μΈμ.
μλ°μ€ν¬λ¦½νΈ μ΅μ λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²: λμ μμ± μ κ·Ό μμ μ 볡
νλ μλ°μ€ν¬λ¦½νΈ κ°λ°μμ 볡μ‘ν λ°μ΄ν° ꡬ쑰λ₯Ό νμνλ κ²μ νν μΌμ λλ€. μ’ μ’ μ‘΄μ¬νμ§ μμ μ μλ μμ±μ μ κ·Όν΄μΌ ν λκ° μμΌλ©°, μ΄λ μ€λ₯λ μκΈ°μΉ μμ λμμΌλ‘ μ΄μ΄μ§ μ μμ΅λλ€. λ€ννλ μλ°μ€ν¬λ¦½νΈλ μ΅μ λ 체μ΄λ(?.)κ³Ό λκ΄νΈ νκΈ°λ²κ³Ό κ°μ κ°λ ₯ν λꡬλ₯Ό μ 곡νμ¬ μ΄λ¬ν μν©μ μ°μνκ² μ²λ¦¬ν©λλ€. μ΄ μ’ ν© κ°μ΄λμμλ μ΄λ¬ν κΈ°λ₯κ³Ό κ·Έ μ΄μ , κ·Έλ¦¬κ³ μ½λμ κ²¬κ³ μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν€κΈ° μν μ€μ μ μ© μ¬λ‘λ₯Ό νꡬν©λλ€.
μ΅μ λ 체μ΄λ(?.) μ΄ν΄νκΈ°
μ΅μ
λ 체μ΄λμ κ° λ¨κ³μ μ‘΄μ¬ μ¬λΆλ₯Ό λͺ
μμ μΌλ‘ νμΈνμ§ μκ³ λ μ€μ²©λ κ°μ²΄ μμ±μ μ κ·Όν μ μλ κ°κ²°ν λ°©λ²μ
λλ€. μ²΄μΈ λ΄μ μμ±μ΄ nullish(null λλ undefined)μΈ κ²½μ°, ννμμ λ¨λ½(short-circuit)λκ³ μ€λ₯λ₯Ό λ°μμν€λ λμ undefinedλ₯Ό λ°νν©λλ€. μ΄λ μ μ¬μ μΌλ‘ λλ½λ μ μλ λ°μ΄ν°λ₯Ό λ€λ£° λ μ½λκ° μΆ©λνλ κ²μ λ°©μ§ν©λλ€.
기본 ꡬ문
μ΅μ
λ 체μ΄λ μ°μ°μλ ?.λ‘ ννλ©λλ€. μμ± μ΄λ¦ λ€μ μμΉνμ¬ ν΄λΉ μμ± μ κ·Όμ΄ μ‘°κ±΄λΆλ‘ μνλμ΄μΌ ν¨μ λνλ
λλ€.
μμ:
const user = {
profile: {
address: {
city: 'London'
}
}
};
// μ΅μ
λ 체μ΄λ λ―Έμ¬μ©:
let city;
if (user && user.profile && user.profile.address) {
city = user.profile.address.city;
}
console.log(city); // μΆλ ₯: London
// μ΅μ
λ 체μ΄λ μ¬μ©:
const cityWithOptionalChaining = user?.profile?.address?.city;
console.log(cityWithOptionalChaining); // μΆλ ₯: London
const nonExistentCity = user?.profile?.contact?.address?.city; //profile.contactκ° μ‘΄μ¬νμ§ μμ
console.log(nonExistentCity); // μΆλ ₯: undefined
μ μμμμ λ λ²μ§Έ console.logλ μ΅μ
λ 체μ΄λμ΄ κΉκ² μ€μ²©λ μμ±μ μ κ·Όνλ κ³Όμ μ μ΄λ»κ² λ¨μννλμ§ λ³΄μ¬μ€λλ€. λ§μ½ profile, address, λλ city μμ± μ€ νλλΌλ null λλ undefinedλΌλ©΄, ννμμ undefinedλ₯Ό λ°ννμ¬ TypeErrorλ₯Ό λ°©μ§ν©λλ€.
μ΅μ λ 체μ΄λ μ¬μ© μ¬λ‘
- API μλ΅ μ κ·Ό: APIμμ λ°μ΄ν°λ₯Ό κ°μ Έμ¬ λ μλ΅ κ΅¬μ‘°κ° λ€λ₯Ό μ μμ΅λλ€. μ΅μ λ 체μ΄λμ μ¬μ©νλ©΄ λλ½λκ±°λ λΆμμ ν λ°μ΄ν°μ λν κ±±μ μμ΄ νΉμ νλμ μ κ·Όν μ μμ΅λλ€.
- μ¬μ©μ νλ‘ν μμ : μ¬μ©μ νλ‘νμ΄ μλ μ ν리μΌμ΄μ μμλ νΉμ νλκ° μ ν μ¬νμΌ μ μμ΅λλ€. μ΅μ λ 체μ΄λμ μ¬μ©νμ¬ μ€λ₯ μμ΄ μ΄λ¬ν νλμ μμ νκ² μ κ·Όν μ μμ΅λλ€.
- λμ λ°μ΄ν° μ²λ¦¬: μμ£Ό λ³κ²½λκ±°λ κ°λ³μ μΈ κ΅¬μ‘°λ₯Ό κ°μ§ λ°μ΄ν°λ₯Ό λ€λ£° λ, μ΅μ λ 체μ΄λμ μ격ν κ°μ μμ΄ μμ±μ μ κ·Όν μ μλ κ²¬κ³ ν λ°©λ²μ μ 곡ν©λλ€.
ν¨μ νΈμΆκ³Ό μ΅μ λ 체μ΄λ
μ΅μ
λ 체μ΄λμ μ‘΄μ¬νμ§ μκ±°λ nullμΌ μ μλ ν¨μλ₯Ό νΈμΆν λλ μ¬μ©ν μ μμ΅λλ€. μ΄λ μ΄λ²€νΈ 리μ€λλ μ½λ°±μ λ€λ£° λ νΉν μ μ©ν©λλ€.
const myObject = {
myMethod: function() {
console.log('λ©μλ νΈμΆλ¨!');
}
};
myObject.myMethod?.(); // myMethodκ° μ‘΄μ¬νλ©΄ νΈμΆ
const anotherObject = {};
anotherObject.myMethod?.(); // μ무 μμ
λ νμ§ μμΌλ©°, μλ¬ λ°μ μ ν¨
μ΄ κ²½μ°, ?.() ꡬ문μ ν¨μκ° κ°μ²΄μ μ‘΄μ¬ν κ²½μ°μλ§ νΈμΆλλλ‘ λ³΄μ₯ν©λλ€. ν¨μκ° null λλ undefinedλΌλ©΄, ννμμ μ€λ₯λ₯Ό λ°μμν€μ§ μκ³ undefinedλ‘ νκ°λ©λλ€.
λκ΄νΈ νκΈ°λ² μ΄ν΄νκΈ°
λκ΄νΈ νκΈ°λ²μ λ³μλ ννμμ μ¬μ©νμ¬ κ°μ²΄ μμ±μ λμ μΌλ‘ μ κ·Όνλ λ°©λ²μ μ 곡ν©λλ€. μ΄λ 미리 μμ± μ΄λ¦μ μ μ μκ±°λ μ ν¨ν μλ°μ€ν¬λ¦½νΈ μλ³μκ° μλ μ΄λ¦μ κ°μ§ μμ±μ μ κ·Όν΄μΌ ν λ νΉν μ μ©ν©λλ€.
기본 ꡬ문
λκ΄νΈ νκΈ°λ²μ λκ΄νΈ([])λ₯Ό μ¬μ©νμ¬ μμ± μ΄λ¦μ κ°μΈλ©°, μ΄ μ΄λ¦μ λ¬Έμμ΄μ΄κ±°λ λ¬Έμμ΄λ‘ νκ°λλ ννμμΌ μ μμ΅λλ€.
μμ:
const person = {
firstName: 'Alice',
lastName: 'Smith',
'age-group': 'adult'
};
// μ νκΈ°λ²μ μ¬μ©ν μμ± μ κ·Ό (λ¨μν μ΄λ¦μ κ²½μ°):
console.log(person.firstName); // μΆλ ₯: Alice
// λκ΄νΈ νκΈ°λ²μ μ¬μ©ν μμ± μ κ·Ό (λμ μ΄λ¦ λλ μ ν¨νμ§ μμ μλ³μμ κ²½μ°):
console.log(person['lastName']); // μΆλ ₯: Smith
console.log(person['age-group']); // μΆλ ₯: adult
const propertyName = 'firstName';
console.log(person[propertyName]); // μΆλ ₯: Alice
μ μμμμ λκ΄νΈ νκΈ°λ²μ μ ν¨ν μλ°μ€ν¬λ¦½νΈ μλ³μκ° μλ μ΄λ¦(μ: 'age-group')μ κ°μ§ μμ±μ μ κ·Όνκ³ , λ³μ(propertyName)λ₯Ό μ¬μ©νμ¬ λμ μΌλ‘ μμ±μ μ κ·Όνλ λ° μ¬μ©λ©λλ€.
λκ΄νΈ νκΈ°λ² μ¬μ© μ¬λ‘
- λμ μ΄λ¦μ κ°μ§ μμ± μ κ·Ό: μμ± μ΄λ¦μ΄ λ°νμμ κ²°μ λ λ(μ: μ¬μ©μ μ λ ₯μ΄λ API μλ΅ κΈ°λ°) λκ΄νΈ νκΈ°λ²μ νμμ μ λλ€.
- νΉμ λ¬Έμλ₯Ό ν¬ν¨νλ μμ± μ κ·Ό: μμ± μ΄λ¦μ νμ΄νμ΄λ 곡백과 κ°μ νΉμ λ¬Έμκ° ν¬ν¨λ κ²½μ°, λκ΄νΈ νκΈ°λ²μ΄ μ μΌν μ κ·Ό λ°©λ²μ λλ€.
- μμ± μν: λκ΄νΈ νκΈ°λ²μ κ°μ²΄μ μμ±μ μννλ 루νμμ νν μ¬μ©λ©λλ€.
λκ΄νΈ νκΈ°λ²μΌλ‘ κ°μ²΄ μμ± μννκΈ°
λκ΄νΈ νκΈ°λ²μ for...in 루νλ₯Ό μ¬μ©νμ¬ κ°μ²΄μ μμ±μ μνν λ νΉν μ μ©ν©λλ€.
const car = {
make: 'Toyota',
model: 'Camry',
year: 2023
};
for (const key in car) {
if (car.hasOwnProperty(key)) { // κ³ μ μμ±μΈμ§ νμΈ
console.log(key + ': ' + car[key]);
}
}
// μΆλ ₯:
// make: Toyota
// model: Camry
// year: 2023
μ΄ μμμμ for...in 루νλ car κ°μ²΄μ μμ±μ μννλ©°, κ° μμ±μ κ°μ μ κ·ΌνκΈ° μν΄ λκ΄νΈ νκΈ°λ²μ΄ μ¬μ©λ©λλ€.
μ΅μ λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ² κ²°ν©νκΈ°
μ΅μ λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²μ κ²°ν©νμ¬ λμ μμ± μ΄λ¦κ³Ό μ μ¬μ μΌλ‘ λλ½λ λ°μ΄ν°λ₯Ό κ°μ§ 볡μ‘ν λ°μ΄ν° ꡬ쑰λ₯Ό μ²λ¦¬ν λ μ§μ ν νμ΄ λ°νλ©λλ€. μ΄ μ‘°ν©μ μ¬μ©νλ©΄ κ°μ²΄μ ꡬ쑰λ₯Ό 미리 μμ§ λͺ»νλ κ²½μ°μλ μμ νκ² μμ±μ μ κ·Όν μ μμ΅λλ€.
ꡬ문
μ΅μ
λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²μ κ²°ν©νλ €λ©΄ λκ΄νΈ μμ ?. μ°μ°μλ₯Ό μ¬μ©ν©λλ€.
μμ:
const data = {
users: [
{
id: 1,
profile: {
details: {
country: 'Canada'
}
}
},
{
id: 2,
profile: {
}
}
]
};
function getCountry(userId) {
// idλ‘ μ¬μ©μ μ°ΎκΈ°
const user = data.users.find(user => user.id === userId);
// μ΅μ
λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²μ μ¬μ©νμ¬ μ¬μ©μ κ΅κ°μ μ κ·Ό
const country = user?.profile?.details?.['country'];
return country;
}
console.log(getCountry(1)); // μΆλ ₯: Canada
console.log(getCountry(2)); // μΆλ ₯: undefined (details μμ± μμ)
console.log(getCountry(3)); // μΆλ ₯: undefined (idκ° 3μΈ μ¬μ©μ μμ)
μ μμμμ getCountry ν¨μλ νΉμ IDλ₯Ό κ°μ§ μ¬μ©μμ κ΅κ°λ₯Ό κ²μνλ €κ³ μλν©λλ€. λκ΄νΈ νκΈ°λ²(['country']) μμ μ΅μ
λ 체μ΄λ(?.)μ μ¬μ©νμ¬ user, profile λλ details μμ±μ΄ null λλ undefinedμΌ κ²½μ° μ½λκ° μ€λ₯λ₯Ό λ°μμν€μ§ μλλ‘ λ³΄μ₯ν©λλ€.
κ³ κΈ μ¬μ© μ¬λ‘
- λμ νΌ λ°μ΄ν°: νλλ₯Ό 미리 μ μ μλ λμ νΌμ λ€λ£° λ, μ΅μ λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²μ μ¬μ©νμ¬ νΌ κ°μ μμ νκ² μ κ·Όν μ μμ΅λλ€.
- κ΅¬μ± κ°μ²΄ μ²λ¦¬: κ΅¬μ± κ°μ²΄λ μ’ μ’ μ νμ μμ±μ κ°μ§ 볡μ‘ν ꡬ쑰λ₯Ό κ°μ§λλ€. μ΅μ λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²μ μ¬μ©νμ¬ μ격ν κ°μ μμ΄ μ΄λ¬ν μμ±μ μ κ·Όν μ μμ΅λλ€.
- κ°λ³ ꡬ쑰μ API μλ΅ μ²λ¦¬: νΉμ 쑰건μ λ°λΌ λ€λ₯Έ νμμΌλ‘ λ°μ΄ν°λ₯Ό λ°ννλ APIλ₯Ό λ€λ£° λ, μ΅μ λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²μ νμν νλμ μ μ°νκ² μ κ·Όνλ λ°©λ²μ μ 곡ν©λλ€.
μ΅μ λ 체μ΄λ λ° λκ΄νΈ νκΈ°λ² μ¬μ© λͺ¨λ² μ¬λ‘
μ΅μ λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²μ κ°λ ₯ν λꡬμ΄μ§λ§, μ μ¬μ μΈ ν¨μ μ νΌνκΈ° μν΄ μ μ€νκ² μ¬μ©νκ³ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ κ²μ΄ μ€μν©λλ€.
- μ μ¬μ μΌλ‘ λλ½λ μ μλ λ°μ΄ν°μ μ΅μ
λ 체μ΄λ μ¬μ©: μμ±μ΄
nullλλundefinedμΌ μ μλ€κ³ μμλ λ μ΅μ λ 체μ΄λμ μ¬μ©ν΄μΌ ν©λλ€. μ΄λ μ€λ₯λ₯Ό λ°©μ§νκ³ μ½λλ₯Ό λ κ²¬κ³ νκ² λ§λλλ€. - λμ μμ± μ΄λ¦μ λκ΄νΈ νκΈ°λ² μ¬μ©: μμ± μ΄λ¦μ΄ λ°νμμ κ²°μ λκ±°λ μ ν¨ν μλ°μ€ν¬λ¦½νΈ μλ³μκ° μλ λ λκ΄νΈ νκΈ°λ²μ μ¬μ©ν΄μΌ ν©λλ€.
- μ΅μ λ 체μ΄λμ κ³Όλν μ¬μ© νΌνκΈ°: μ΅μ λ 체μ΄λμ μ½λλ₯Ό κ°κ²°νκ² λ§λ€ μ μμ§λ§, κ³Όλνκ² μ¬μ©νλ©΄ μ΄ν΄νκ³ λλ²κΉ νκΈ° μ΄λ €μμ§ μ μμ΅λλ€. νμν λλ§ μ¬μ©νμΈμ.
- Nullish λ³ν© μ°μ°μ(??)μ κ²°ν©: Nullish λ³ν© μ°μ°μ(
??)λ μ΅μ λ 체μ΄λκ³Ό ν¨κ» μ¬μ©νμ¬ μμ±μ΄nullλλundefinedμΌ λ κΈ°λ³Έκ°μ μ 곡ν μ μμ΅λλ€. - λͺ ννκ³ κ°κ²°ν μ½λ μμ±: μλ―Έ μλ λ³μ μ΄λ¦κ³Ό μ£Όμμ μ¬μ©νμ¬ μ½λλ₯Ό λ μ½κ² μ΄ν΄νκ³ μ μ§λ³΄μν μ μλλ‘ λ§λμΈμ.
Nullish λ³ν© μ°μ°μ(??)μ κ²°ν©νκΈ°
Nullish λ³ν© μ°μ°μ(??)λ κ°μ΄ null λλ undefinedμΌ λ κΈ°λ³Έκ°μ λ°ννλ λ°©λ²μ μ 곡ν©λλ€. μ΄λ μ΅μ
λ 체μ΄λκ³Ό ν¨κ» μ¬μ©νμ¬ μμ±μ΄ λλ½λμμ λ λ체 κ°μ μ 곡ν μ μμ΅λλ€.
const settings = {
theme: {
colors: {
primary: '#007bff'
}
}
};
const primaryColor = settings?.theme?.colors?.primary ?? '#ffffff'; // κΈ°λ³Έ μμμ΄ μμΌλ©΄ ν°μμΌλ‘ κΈ°λ³Έκ° μ€μ
console.log(primaryColor); // μΆλ ₯: #007bff
const secondaryColor = settings?.theme?.colors?.secondary ?? '#cccccc'; // 보쑰 μμμ΄ μμΌλ©΄ λ°μ νμμΌλ‘ κΈ°λ³Έκ° μ€μ
console.log(secondaryColor); // μΆλ ₯: #cccccc
μ μμμμ nullish λ³ν© μ°μ°μ(??)λ ν΄λΉ μμ±μ΄ null λλ undefinedμΌ κ²½μ° primaryColor λ° secondaryColor λ³μμ λν κΈ°λ³Έκ°μ μ 곡νλ λ° μ¬μ©λ©λλ€.
μ€λ₯ μ²λ¦¬ λ° λλ²κΉ
μ΅μ λ 체μ΄λμ΄ νΉμ μ νμ μ€λ₯λ₯Ό λ°©μ§νμ§λ§, μ¬μ ν μ€λ₯λ₯Ό μ°μνκ² μ²λ¦¬νκ³ μ½λλ₯Ό ν¨κ³Όμ μΌλ‘ λλ²κΉ νλ κ²μ΄ μ€μν©λλ€. λ€μμ λͺ κ°μ§ νμ λλ€:
- Try-Catch λΈλ‘ μ¬μ©: μκΈ°μΉ μμ μ€λ₯λ₯Ό μ²λ¦¬νκΈ° μν΄ μ½λλ₯Ό
try-catchλΈλ‘μΌλ‘ κ°μΈμΈμ. - μ½μ λ‘κΉ
μ¬μ©:
console.logλ¬Έμ μ¬μ©νμ¬ λ³μ κ°μ κ²μ¬νκ³ μ½λ νλ¦μ μΆμ νμΈμ. - λλ²κΉ λꡬ μ¬μ©: λΈλΌμ°μ κ°λ°μ λꡬλ IDE λλ²κΉ κΈ°λ₯μ μ¬μ©νμ¬ μ½λλ₯Ό λ¨κ³λ³λ‘ μ€ννκ³ μ€λ₯λ₯Ό μλ³νμΈμ.
- λ¨μ ν μ€νΈ μμ±: λ¨μ ν μ€νΈλ₯Ό μμ±νμ¬ μ½λκ° μμλλ‘ μλνλμ§ νμΈνκ³ μ€λ₯λ₯Ό μ‘°κΈ°μ λ°κ²¬νμΈμ.
try {
const user = data.users.find(user => user.id === userId);
const country = user?.profile?.details?.['country'];
console.log(country ?? 'κ΅κ°λ₯Ό μ°Ύμ μ μμ');
} catch (error) {
console.error('μ€λ₯κ° λ°μνμ΅λλ€:', error);
}
μ€μ μμ
λ€μν μλ리μ€μμ μ΅μ λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²μ μ΄λ»κ² μ¬μ©ν μ μλμ§ μ€μ μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
μμ 1: APIμμ μ¬μ©μ λ°μ΄ν° μ κ·ΌνκΈ°
async function fetchUserData(userId) {
try {
const response = await fetch(`https://api.example.com/users/${userId}`);
const userData = await response.json();
const userName = userData?.name ?? 'μ μ μλ μ¬μ©μ';
const userEmail = userData?.email ?? 'μ΄λ©μΌ μμ';
const userCity = userData?.address?.city ?? 'λμ μ 보 μμ';
console.log(`μ¬μ©μ μ΄λ¦: ${userName}`);
console.log(`μ¬μ©μ μ΄λ©μΌ: ${userEmail}`);
console.log(`μ¬μ©μ λμ: ${userCity}`);
} catch (error) {
console.error('μ¬μ©μ λ°μ΄ν° κ°μ Έμ€κΈ° μ€ν¨:', error);
}
}
// μ¬μ© μμ:
// fetchUserData(123);
μ΄ μμ λ APIμμ μ¬μ©μ λ°μ΄ν°λ₯Ό κ°μ Έμ μ΅μ λ 체μ΄λκ³Ό nullish λ³ν© μ°μ°μλ₯Ό μ¬μ©νμ¬ νΉμ νλμ μ κ·Όνλ λ°©λ²μ 보μ¬μ€λλ€. νλκ° λλ½λ κ²½μ° κΈ°λ³Έκ°μ΄ μ¬μ©λ©λλ€.
μμ 2: λμ νΌ λ°μ΄ν° μ²λ¦¬
function processFormData(formData) {
const firstName = formData?.['first-name'] ?? '';
const lastName = formData?.['last-name'] ?? '';
const age = formData?.age ?? 0;
console.log(`μ΄λ¦: ${firstName}`);
console.log(`μ±: ${lastName}`);
console.log(`λμ΄: ${age}`);
}
// μ¬μ© μμ:
const formData = {
'first-name': 'John',
'last-name': 'Doe',
age: 30
};
processFormData(formData);
μ΄ μμ λ νλλ₯Ό 미리 μ μ μλ λμ νΌ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ°©λ²μ 보μ¬μ€λλ€. μ΅μ λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²μ μ¬μ©νμ¬ νΌ κ°μ μμ νκ² μ κ·Όν©λλ€.
κ²°λ‘
μ΅μ λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²μ μλ°μ€ν¬λ¦½νΈ μ½λμ κ²¬κ³ μ±κ³Ό μ μ§λ³΄μμ±μ ν¬κ² ν₯μμν¬ μ μλ κ°λ ₯ν λꡬμ λλ€. μ΄λ¬ν κΈ°λ₯μ ν¨κ³Όμ μΌλ‘ μ¬μ©νλ λ°©λ²μ μ΄ν΄ν¨μΌλ‘μ¨ λ³΅μ‘ν λ°μ΄ν° ꡬ쑰λ₯Ό μ½κ² μ²λ¦¬νκ³ μκΈ°μΉ μμ μ€λ₯λ₯Ό λ°©μ§ν μ μμ΅λλ€. λͺ ννκ³ κ°κ²°νλ©° μ λ’°ν μ μλ μ½λλ₯Ό μμ±νκΈ° μν΄ μ΄λ¬ν κΈ°μ μ μ μ€νκ² μ¬μ©νκ³ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ κ²μ μμ§ λ§μΈμ.
μ΅μ λ 체μ΄λκ³Ό λκ΄νΈ νκΈ°λ²μ λ§μ€ν°νλ©΄ μ΄λ€ μλ°μ€ν¬λ¦½νΈ κ°λ° κ³Όμ μλ μ λμ²ν μ μμ κ²μ λλ€. μ¦κ±°μ΄ μ½λ© λμΈμ!